package controle.aluno;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JOptionPane;



import modelagem.Aluno;
import modelagem.Sexo;
import visao.aluno.BuscadeAlunos;
import visao.aluno.interfaceAluno;

public class AcoesInterfaceAluno implements ActionListener, MouseListener, KeyListener{

	private interfaceAluno ia;
	private Aluno alun;
	private alunoDAO BdeDados;
	private long sucess = 0;
	
	public AcoesInterfaceAluno() {
	}
	
	public AcoesInterfaceAluno(interfaceAluno ia){
		this();
		this.ia = ia;
	}

	public void actionPerformed(ActionEvent evt) {
		if(((JButton) evt.getSource()).getName().equals("OK")){
			if(ia.getTxtNome().getText().equals("") == false){
				if(ia.getTxtMatricula().getText().equals("       ") == false){
					if(ia.getTxtDataNasc().getText().equals("  /  /    ") == false){
						if(ia.getTxtRg().getText().equals("          - ") == false){
							if(ia.getTxtCpf().getText().equals("   .   .   -  ") == false){
								if(ia.getTxtEndereco().getText().equals("Ex: Rua, nº, complemento") == false){
							
				int opc = 0;
					save();
					if(sucess == -1){
						//JOptionPane.showMessageDialog(null, "Erro por ter valores duplicados!");
						return;
					}
					//JOptionPane.showMessageDialog(null, "Dados Salvos:\nNome: " + ia.getTxtNome().getText()
					//		+"\nMatricula: "+ia.getTxtMatricula().getText());
					opc = JOptionPane.showConfirmDialog(null, "Deseja cadastrar mais alguem?");
					if(opc == 1){
						ia.dispose();
					}else if (opc == 0){
						ia.dispose();
						ia = new interfaceAluno();
						ia.setVisible(true);
					}
								}else
									JOptionPane.showMessageDialog(null, "Digite o Endereço!");
							}else
								JOptionPane.showMessageDialog(null, "Digite o Cpf!");
						}else
							JOptionPane.showMessageDialog(null, "Digite o Rg!");
					}else
						JOptionPane.showMessageDialog(null, "Digite a data de nascimento!");
				}else
					JOptionPane.showMessageDialog(null, "Digite a matricula!");
			}else
				JOptionPane.showMessageDialog(null, "Digite um nome!");
		}
		
		if(((Component) evt.getSource()).getName().equals("Cancelar")){
			ia.dispose();
		}
		if(((Component) evt.getSource()).getName().equals("Buscar")){
			ia.setBuscAluno(new BuscadeAlunos(ia));
			ia.getBuscAluno().setVisible(true);
		}
		if(((JButton) evt.getSource()).getName().equals("Atualizar")){
			atualizar();
			ia.dispose();
		}
	}
	
	public void save(){
		Sexo s = null;
		if(ia.getSexo()[0].isSelected() == true)
			s = Sexo.M;
		else
			s = Sexo.F;
		
		alun = new Aluno(ia.getTxtNome().getText(),ia.getTxtMatricula().getText(),
				ia.getTxtTelefone().getText(),ia.getTxtDataNasc().getText(), 
				ia.getTxtCpf().getText(),ia.getTxtRg().getText(), ia.getTxtEndereco().getText(),
				ia.getTxtEmail().getText(), ia.getTxtObservacoes().getText(), s);
		BdeDados = new alunoDAO();
		sucess = BdeDados.inserir(alun);
	}
	
	public void atualizar(){
		Sexo s = null;
		if(ia.getSexo()[0].isSelected() == true)
			s = Sexo.M;
		else
			s = Sexo.F;
		int id = ia.getBuscAluno().getAcoesBuscaAluno().getAlun().getId();
		alun = new Aluno(ia.getTxtNome().getText(),ia.getTxtMatricula().getText(),
				ia.getTxtTelefone().getText(),ia.getTxtDataNasc().getText(), 
				ia.getTxtCpf().getText(),ia.getTxtRg().getText(), ia.getTxtEndereco().getText(),
				ia.getTxtEmail().getText(), ia.getTxtObservacoes().getText(), s);
		alun.setId(id);
		BdeDados = new alunoDAO();
		BdeDados.atualizar(alun);
	}
	
	
	public void mouseReleased(MouseEvent evt) {
	}
	
	public void mousePressed(MouseEvent evt) {
		if(evt.getSource() == ia.getTxtEndereco()){
			ia.getTxtEndereco().setText("");
			ia.getTxtEndereco().removeMouseListener(this);
		}
	}
	
	public void mouseExited(MouseEvent evt) {
	}
	
	public void mouseEntered(MouseEvent evt) {
	}
	
	public void mouseClicked(MouseEvent evt) {
	}

	
	
	public void keyPressed(KeyEvent evt) {
		
	}
	public void keyReleased(KeyEvent evt) {
		
	}
	public void keyTyped(KeyEvent evt) {
		
	}

	public interfaceAluno getIa() {
		return ia;
	}

	public void setIa(interfaceAluno ia) {
		this.ia = ia;
	}

	public Aluno getAlun() {
		return alun;
	}

	public void setAlun(Aluno alun) {
		this.alun = alun;
	}

	public alunoDAO getBdeDados() {
		return BdeDados;
	}

	public void setBdeDados(alunoDAO bdeDados) {
		BdeDados = bdeDados;
	}

}
